// 定义请求路径, BASEURL: 普通请求API; CBASEURL: 中台API,不使用中台可不引入CBASEURL
import  baseURL from "./config";

/**
 * 上传单个文件
 * @param filePath 
 * @param url 
 * @param formData 
 * @param successCallback 
 * @param failCallback 
 */
function uploadSingleFile(filePath: any, url: any, formData = {}, successCallback: (arg0: any) => void, failCallback:any) {  
  wx.uploadFile({  
    url: baseURL.BASEURL+url, // 开发者服务器 url  
    filePath: filePath, // 要上传文件资源的路径 (本地路径)  
    name: 'file', // 发送到服务器的文件参数名  
    formData: formData, // HTTP 请求中其他额外的 form data  
    success: function(res) {  
      if (res.statusCode === 200) {  
        // 对返回的数据进行处理  
        const data = JSON.parse(res.data);  
        successCallback(data);  
      } else {  
        failCallback(res.errMsg);  
      }  
    },  
    fail: failCallback  
  });  
}  

/**
 * 上传多个文件
 * @param files 
 * @param url 
 * @param formData 
 * @param successCallback 
 * @param failCallback 
 */
function uploadMultipleFiles(files: any[], url: any, formData = {}, successCallback: any, failCallback: any) {  
const promises = files.map((file: { path: any; }) => {  
  return new Promise((resolve, reject) => {  
    wx.uploadFile({  
      url: baseURL.BASEURL+url,  
      filePath: file.path,  
      name: 'file', // 或者可以根据需要动态设置  
      formData: {  
        ...formData,  
        // 可以添加额外的formData，比如每个文件的标识  
        // fileName: file.name,  
      },  
      success: function(res) {  
        if (res.statusCode === 200) {  
          resolve(JSON.parse(res.data));  
        } else {  
          reject(res.errMsg);  
        }  
      },  
      fail: reject  
    });  
  });  
}); 
Promise.all(promises)  
.then(results => {  
  successCallback(results);  
})  
.catch(error => {  
  failCallback(error);  
});  
} 

export default{
  uploadSingleFile,
  uploadMultipleFiles
}